package com.ddwanglife.lamda;

import java.util.function.Function;

/**
 * 级联表达式和柯里化
 * 柯里化：把多个参数的函数转换为只有一个参数的函数
 * 柯里化的目的：函数标准化
 * 高阶函数：就是返回函数的函数
 */
public class CurryDemo {
    public static void main(String[] args) {
        Function<Integer,Function<Integer, Function<Integer,Integer>>> function =
                x->y->z->x+y+z;
        System.out.println(function.apply(2).apply(3).apply(4));
        int[] nums = {2,3,4};
        for (int i=0;i<nums.length;i++){
            if(function instanceof Function){
             Object obj = function.apply(nums[i]);
             if(obj instanceof Function){
                 function = (Function)obj;
             }else{
                 System.out.println("调用结束，结果为："+obj);
             }
            }
        }
    }
}
